package com.zensun.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zensun.system.domain.SysUser;
import com.zensun.system.domain.UpdateUserStatus;
import com.zensun.system.domain.dto.SysProfilePatchDto;
import com.zensun.system.domain.dto.SysUserDto;
import com.zensun.system.domain.dto.SysUserPatchDto;
import com.zensun.system.domain.vo.SysUserDetailVo;
import com.zensun.system.domain.vo.SysUserVo;

import java.util.List;

/**
 * 用户 业务层
 *
 * @author gmk
 */
public interface ISysUserService extends IService<SysUser> {
    /**
     * 根据条件分页查询用户列表
     *
     * @param userDto 用户信息
     * @return 用户信息集合信息
     */
    public List<SysUserVo> selectUserList(SysUserDto userDto);

    /**
     * 根据Id查询用户详情
     *
     * @param userId
     * @return
     */
    SysUserDetailVo selectUserById(Long userId);

    /**
     * 根据手机查询用户
     *
     * @param telephone
     * @return
     */
    SysUser selectUserByTelePhone(String telephone);

    /**
     * 新增之前的校验
     *
     * @param telePhone
     * @return
     */
    boolean addVerify(String telePhone);

    /**
     * 增加用户
     *
     * @param user
     * @return
     */
    int insertUser(SysUser user);

    /**
     * 修改用户
     *
     * @param user
     * @return
     */
    int updateUser(SysUser user);

    /**
     * 根据用户姓名查询用户
     *
     * @param username
     * @return
     */
    public SysUser selectUserByUserName(String username);

    /**
     * 根据角色Id查询用户所属角色组
     *
     * @param userId 手机号
     * @return 结果
     */
    public String selectUserRoleGroup(Long userId);

    /**
     * 修改用户基本信息
     *
     * @param sysProfilePatchDto 用户信息
     * @return 结果
     */
    public int updateUserProfile(SysProfilePatchDto sysProfilePatchDto);

    /**
     * 修改用户头像
     *
     * @param telephone 用户名
     * @param avatar    头像地址
     * @return 结果
     */
    public boolean updateUserAvatar(String telephone, String avatar);

    /**
     * 重置用户密码
     *
     * @param sysUserPatchDto 用户信息
     * @return 结果
     */
    public int resetPwd(SysUserPatchDto sysUserPatchDto);

    /**
     * 重置用户密码
     *
     * @param userId   用户Id
     * @param password 密码
     * @return 结果
     */
    public int resetUserPwd(Long userId, String password);

    /**
     * 批量删除用户信息
     *
     * @param userIds 需要删除的用户ID
     * @return 结果
     */
    public boolean deleteUserByIds(Long[] userIds);


    /**
     * 禁用账户
     *
     * @param updateUserStatus
     * @return
     */
    boolean blockedAccount(UpdateUserStatus updateUserStatus);

    /**
     * 启用账户
     *
     * @param updateUserStatus
     * @return
     */
    boolean dredgeAccount(UpdateUserStatus updateUserStatus);


}
